home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / web_loadbalancer.nasl < prev    next >
Text File  |  2005-01-14  |  4KB  |  123 lines

  1. if(description)
  2. {
  3.  script_id(12224);
  4.  script_version ("$Revision: 1.6 $");
  5.  name["english"] = "Web Server load balancer detection";
  6.  
  7.  script_name(english:name["english"]);
  8.  
  9.  desc["english"] = "
  10. The remote Web server seems to be running in conjunction
  11. with several others behind a load balancer. 
  12.  
  13. Risk factor : Low 
  14.  
  15. Solution : Use web configuration to hide information disclosure";
  16.  
  17.  script_description(english:desc["english"]);
  18.  
  19.  summary["english"] = "Web Server load balancer detection";
  20.  script_summary(english:summary["english"]);
  21.  
  22.  script_category(ACT_GATHER_INFO);
  23.  
  24.  
  25.  script_copyright(english:"This script is Copyright (C) 2004 Tenable Network Security",
  26.         francais:"Ce script est Copyright (C) 2004 Tenable Network Security");
  27.  family["english"] = "CGI abuses";
  28.  family["francais"] = "Abus de CGI";
  29.  script_family(english:family["english"], francais:family["francais"]);
  30.  script_dependencie("find_service.nes");
  31.  script_require_ports("Services/www", 80);
  32.  exit(0);
  33. }
  34.  
  35. #
  36. # The script code starts here
  37. #
  38.  
  39.  
  40. # so, saw this on FD today:
  41. #Date: Tue,  4 May 2004 11:30:35 -0700
  42. #From: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
  43. #To: full-disclosure@lists.netsys.com
  44. #Subject: RE: [Full-Disclosure] A FreeBSD server that is converted in a MS 2003 Server... and viceversa
  45. #
  46. #> I have access to a FreeBSD server, I accessed and look a little.
  47. #> The problem is when sometimes I have not access anymore, and its
  48. #> because the server is not a FreeBSD, is a MS 2003 Server... :(
  49. #
  50. #Sounds like the round robin DNS exploit or possibly the multi-os load
  51. #balancing vulnerability.  Could be that new self-morphing, dynamic reconfigurator
  52. #rootkit, too.  Sounds evil in any case.
  53. #
  54. # I thought it would be neat if Nessus could find multiple hosts (sometimes *internal* hosts :-) )
  55. # behind a single IP
  56.  
  57. include("http_func.inc");
  58.  
  59. function pull_location(bling) {
  60.     line = egrep(string:bling, pattern:"^Location");
  61.     if ( ! line ) return NULL;
  62.     url = ereg_replace(pattern:"^Location:(http.?://[^/]*)", replace:"\1", string:line);
  63.     return url;
  64. }
  65.  
  66. port = get_http_port(default:80);
  67.  
  68. # We are purposely *not* setting the Host: header AND using HTTP/1.0
  69. req = string("GET /images HTTP/1.0\r\n\r\n"); 
  70.  
  71. # make sure we get a 302
  72. soc = http_open_socket(port);
  73. if ( ! soc ) exit(0);
  74. send(socket:soc, data:req);
  75. res = http_recv_headers(soc);
  76. close (soc);
  77. if (! egrep(string:res, pattern:"^HTTP/.* 302 ") ) exit(0); 
  78.  
  79.  
  80. # looks like :
  81. # HTTP/1.1 302 Object Moved
  82. # Location: http://x.x.x.x/images/
  83. # Server: Microsoft-IIS/5.0
  84. # Content-Type: text/html
  85. # Content-Length: 152
  86.  
  87. urlz = make_list();
  88. last = "";
  89. diffcounter = 0;
  90.  
  91. for (i=0; i<20; i++) {
  92.     soc = http_open_socket(port);
  93.     if ( ! soc ) break;
  94.     send(socket:soc, data:req);
  95.     res = http_recv_headers(soc);
  96.     close (soc);
  97.     myurl = pull_location(bling:res);
  98.     #display(myurl);
  99.     if (myurl != last) {
  100.         diffcounter++; 
  101.         urlz = make_list(urlz, myurl);
  102.     }
  103.     last = myurl;
  104. }    
  105.  
  106. if (diffcounter) {
  107.     counter  = 0;
  108.     mymsg = string("The remote host appears to be load balanced.  It may
  109. be useful, as a penetration tester, to know that there are multiple
  110. systems behind the tested IP address.  It is in your best interest to
  111. manually test each of these systems, as it has been known that several
  112. hosts within a load-balanced cluster may be running different OS, patch-
  113. level, etc.  We queried the machine 20 times, and got the following IP
  114. addresses embedded within the reply:\n");
  115.     foreach z (urlz) {mymsg += string(z,"\n"); counter ++;}
  116.     if ( counter > 1 ) security_note(port:port, data:mymsg);
  117.     exit(0);
  118. }
  119.  
  120.  
  121.  
  122. exit(0);
  123.